//
//  WBBaseViewController.swift
//  WeiBo
//
//  Created by lihaixing on 2018/11/29.
//  Copyright © 2018年 lihaixing. All rights reserved.
//

import UIKit
//OC中不能多继承，解决方案是利用代理来间接实现多态
//swift中更像是多继承。
//extention 中，是扩展类原来没有的方法，是独立的方法补充
//而重写，是子类在父类某个函数的基础上，进行扩展延伸增加

// MARK:这里主要是属性和功能函数调用
class WBBaseViewController: UIViewController {
//    定义一个可选UITableView
    var tableView:UITableView?
    var refreshControl:UIRefreshControl?
    

    lazy var navigationBarr = UINavigationBar.init(frame:CGRect(x: 0, y: 0, width: UIScreen.cz_screenWidth(), height:84))
    lazy var naviItem = UINavigationItem.init()
    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
        loadData()

        // Do any additional setup after loading the view.
    }

    override var title: String?{
        didSet{
            naviItem.title=title
        }
    }
//    加载数据，具体由子类实现
    @objc func loadData() {
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
// MARK:这里主要是界面相关的设置
extension WBBaseViewController{

     @objc func setupUI(){
        view.backgroundColor=UIColor.cz_random();
       setupNavigationBar()
        setupTableView()
    }
//    设置表格视图
    private func setupTableView() {
        tableView=UITableView.init(frame: view.bounds, style: .plain)
        view.insertSubview(tableView!, belowSubview: navigationBarr)
        tableView?.delegate=self
        tableView?.dataSource=self
        tableView?.contentInsetAdjustmentBehavior = .never
        tableView?.contentInset=UIEdgeInsets(top: 44, left: 0, bottom: 49, right: 0)
        
        refreshControl=UIRefreshControl()
        refreshControl?.addTarget(self, action: #selector(loadData), for: .valueChanged)
        tableView?.addSubview(refreshControl!)
        
    }
//    抽取导航条设置代码。
    private func setupNavigationBar() {
        navigationBarr.items=[naviItem]
        view.addSubview(navigationBarr)
        navigationBarr.barTintColor=UIColor.cz_color(withHex: 0xF6F6F6)
        navigationBarr.titleTextAttributes=[NSAttributedStringKey.foregroundColor:UIColor.darkGray]
    }
}
// MARK:这里主要是代理方法的书写
extension WBBaseViewController:UITableViewDelegate,UITableViewDataSource{
    
    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
}
